/**
 * 
 */
package evolution.tutors;

import evolution.mlp.MLP;

/**
 * @author camille
 * 
 */
public interface Tutor {
	
	/**
	 * Getter for the name identifying the tutor (must be unique)
	 * @return the {@link Tutor} name
	 */
	public abstract String getName();

	/**
	 * Tests if an {@link MLP} is acceptable
	 * @param mlp
	 * @return true if the {@link MLP} is acceptable, or else false
	 */
	public abstract boolean accept(MLP mlp);

	/**
	 * Computes and returns an {@link MLP} fitness
	 * @param mlp
	 * @return the given {@link MLP} fitness
	 */
	public abstract double fitness(MLP mlp);

	/**
	 * Returns a {@link String} describing "readable" results
	 * @param mlp
	 * @return results as a "readable" {@link String}
	 */
	public abstract String results(MLP mlp);
}
